import os
import torch
from tqdm import tqdm

class BaseTest:
    def __init__(self) -> None:
        pass

    def eval(self):
        raise NotImplementedError()
    
    def data_preprocess(self, frame: torch.Tensor) -> torch.Tensor:
        raise NotImplementedError()
    
    def data_postprocess(self, frame: torch.Tensor):
        raise NotImplementedError()
    

class LICTest(BaseTest):
    def __init__(
        self,
        folder,
        device = "cuda"
    ) -> None:
        super().__init__()

        self.folder = folder

    def intra():

        
    def eval(self):
        bpp_arr = []
        ms_mssim_arr = []
        psnr_arr = []

        image_list = os.listdir(self.folder)

        for seq in tqdm(image_list, desc = "images"):
            x_hat, psnr, ms_mssim, bpp = self.intra_encode(frame)
